I. Field of the Invention
The present invention is a system and method for detecting and correcting errors in a multiple head storage device. More specifically, this invention relates to a system and method for detecting errors caused by the misalignment of one or more heads in a multiple head storage device, and for manipulating these heads in order to recover undecipherable data caused by the misalignment.
II. Related Art
In recent years, there has been an enormous increase in the speed and general capabilities of computers. This has been driven largely by the desires of people to solve larger and more complex problems. In view of the size of some of these problems and the amounts of raw data that they require, the speed and power of computer peripherals such as mass-storage devices is very important in order to take full advantage of a powerful computer.
The speed of mass-storage devices has traditionally lagged significantly behind the speed of state-of-the-art computers. This is largely due to the fact that, unlike the computational portion of a computer, mass-storage devices contain moving parts. Consequently, there is a continuing need for faster data storage devices which can effectively work in conjunction with today's high speed computers.
At present, computer storage devices for storing data used in conjunction with the computational portion (also referred to as the "host" portion) of a computer typically have one or more read/write or read-only heads which pass over some medium upon which data is stored. The storage capabilities of these mediums are usually based upon magnetic or optical principles. The faster devices using such mediums are typically in the form of magnetic or optical disks.
In most cases, the heads and their associated controlling mechanisms are configured so that each head will only read from and write to certain portions of a storage medium. These portions are known as tracks. On a magnetic or optical disk storage device, these tracks are concentric, having some amount of concentric non-used space between each track. When a host device or host computer requests that certain data residing on one or more tracks be sent to it, the head is then manipulated over those desired tracks in order to read the desired data.
The number and spacing of these tracks used with the above-noted storage mediums are generally dictated by some combination of hardware and software which directly or indirectly controls the heads. The width of the track itself, however, is a function of the head. In any event, it is important that a head be able to position itself properly over the track which it is directed to (the "target" track) in order to accurately read data. This has become more difficult due to the increased need to store and retrieve more data more quickly without increasing the size of the storage medium. The result is the development of storage devices in which data is packed more densely, and in which the medium is passed under the heads more quickly.
At any given point in time, the limitations of technology allow data to be packed only so densely and heads to read data only so quickly. In addition, those storage devices which are state-of-the-art in terms of data density and the speed at which the medium is passed under the heads tend to be expensive. Thus, in order to increase the speed (that is, the throughput) at which a host computer can write data to or receive data from a single storage device, storage devices having multiple heads were developed. The type of multiple head storage device contemplated here is one where all of the heads in the device are reading data simultaneously, or are writing data simultaneously.
Typically, when data is sent to one of these multiple head storage devices from a host computer, it is distributed or "striped" into sections evenly amongst the heads of the storage device. For example, in a three-head storage device, the data might be split up so that first two bytes might go to head 1, the next two to head 2, the next two to head 3, and then the next two to head 1 again. In this example, each section is two bytes. During this process, each head is positioned over a different track (each track may or may not reside on a different storage medium, as will be explained regarding FIGS. 1 and 2 below). This striping operation continues until all of the data sent by the host computer has been written to the storage device.
When the host computer requests that data be read to it from such a three-head storage device, all of the heads simultaneously read the data and combine or "interleave" it back again so that it is in the same form as when the host computer initially sent it to the storage device. Thus, as far as the host computer is concerned, the multiple head storage device uses only one head.
A problem that occurs in storage devices generally is that the head sometimes becomes misaligned with a track. This misalignment causes the head to read useless or "undecipherable" data. One method for realigning the head is to move the head back and forth by small increments until the head is again aligned with the track so that the data from that track becomes decipherable, and can be recovered. Thus, the head is moved in increments sufficiently small and in such a pattern so that it can seek out the target track without wandering too far from the target track (or too close to another track). Depending upon the condition of the storage device, the device will continue to be used, or else the data will be recovered, and the device replaced.
In a multiple head storage device, the problem of misalignment is amplified by the fact that there is more than one head to consider. In order to minimize this problem, the heads of multiple head storage devices are typically locked together as a multiple head assembly so that they all move in unison. In this way, misalignments usually affect all of the heads, and thus corrective measures can be taken as though there was only a single head to consider.
Even in multiple head storage devices where the heads are locked together in a multiple head assembly, one or more of the heads in the multiple head assembly can nevertheless become misaligned. When this occurs, it is necessary to recover the data from those tracks serviced by the misaligned head(s). However, the recovery process involved is more difficult than if the storage device had only a single head.
FIG. 1 is used to illustrate the problems with error detection and data recovery that can occur in a multiple head storage device described above. Referring to FIG. 1, this figure shows an example of a multiple head storage device 104 having three separate disks, with one head servicing each disk. In this example, the heads are attached together to form a multiple head assembly 106 which constrains all of the heads to move in unison.
Although the heads in the example shown in FIG. 1 may be initially set at the proper distances for them to read or write properly on their designated tracks, it is still possible for one or more of the heads to become misaligned. In this example, head 3 is shown to be misaligned.
One problem with determining which head is misaligned and is causing undecipherable data to be generated is that error detection and correction schemes generate some type of Error Correction Code (ECC) prior to storing data to the multiple head storage device 104. Thus, each ECC is a function of some amount of the pre-striped data. When there is a request from the host computer to read data from the multiple head storage device 104, the multiple head storage device 104 interleaves the data, and the ECC is checked to make sure that the data read is the same data that was written to the multiple head storage device (that is, that there are no data errors). Since the ECC is conventionally used to check some amount of pre-striped data (that is, it is used to check the data after it is interleaved), it would be difficult to determine from an error detected from the occurrence of undecipherable data specifically which head caused the error.
Another problem is that by moving head 3 in multiple head storage device 104 by a small increment to correct the misalignment of head 3, this will typically cause heads 1 and 2 to become misaligned. This would cause any data read from heads 1 and 2 to become undecipherable. Thus, the data from these other heads must be taken care of either before or after the multiple assembly 106 is moved by small increments, since data from all heads need to be interleaved before the data can be sent to a host computer 102. Where at least one head is misaligned, the fact that all the heads cannot simultaneously read decipherable data makes this interleave process more difficult.
FIG. 2 shows another example of a multiple head storage device. This type of multiple head storage device utilizes more than one head per disk. The example shown in FIG. 2 shows such a multiple head storage device 104 having three heads and n tracks, where n would typically be an integer divisible by 3.
Thus, what is needed is a system or method to identify which head(s) in a multiple head storage device is misaligned, and to recover the data from that device in an efficient manner.